package singleton;

/**
 * @ClassName LazySingletonTwo
 * @Description TODO
 * @Author 李奉武
 * @Motto 逆水行舟, 不进则退
 * @Date 2022/3/31 14:02
 * @Version 1.0
 */
public class LazySingletonTwo {

    //禁止指令重排序 内存可见性
    private volatile static  LazySingletonTwo lazySingletonTwo;

    //私有构造
    private LazySingletonTwo() {

    }

    public static LazySingletonTwo getIncetence(){

        if (lazySingletonTwo==null){
            //锁住对象实例
            synchronized (LazySingletonTwo.class){
                if (lazySingletonTwo==null){
                    lazySingletonTwo=new LazySingletonTwo();
                }
            }
        }
        return lazySingletonTwo;
    }

    @Override
    public String toString() {
        return "LazySingletonTwo{}";
    }
}
